草庐IT

C++11 智能指针 shared_ptr

全部标签

go - 将您的 App Engine 应用程序从 Go 1.9 迁移到 Go 1.11

我已将我的golang版本从1.9更新到1.11。更新sendgrid邮件发送后无法正常工作。我已点击以下链接:https://cloud.google.com/appengine/docs/standard/go111/go-differences并发现我们需要使用request.Context()或您首选的上下文而不是使用appengine.NewContext。但是当我尝试request.Context()获取请求时未定义。那么如何将appengine.NewContext更改为request.Context()forgo111这是我的代码:funcSendTestmail(ce

go - grpc:使用 oneof 会导致无效的内存地址或 nil 指针取消引用

我正在尝试使用Go将proto3结构发送到gRPC服务器。该结构有一个oneof类型,我似乎很好地填充了它。将消息发送到我的gRPC客户端时,我对无效内存地址或nil指针引用感到panic。我有原型(prototype)定义(完整文件位于https://github.com/MovingGauteng/geofancy-rs/blob/master/proto/geofancy.proto:#proto3messageDocument{stringcollection=1;stringid=2;oneofgeo{Pointpoint=4;LineStringline=5;Boundsb

go - 使用反射填充指向结构的指针

我想遍历结构中的字段并提示将字符串值输入字符串字段,对作为结构指针的字段递归执行此操作。目前这是我尝试过的方法,但在尝试在指针的字符串字段中设置此值时出现错误。packagemainimport("fmt""reflect")typeTablestruct{PK*Field}typeFieldstruct{Namestring}funcmain(){PopulateStruct(&Table{})}funcPopulateStruct(ainterface{})interface{}{typeOf:=reflect.TypeOf(a)valueOf:=reflect.ValueOf(a

go - 是否可以捕获此 nil 指针错误

我有一个编译器无法发现的“nilpointer”错误,但我想看看是否有办法通过静态分析找到它。所以bug是这样的:packagemainimport("fmt")typeAstruct{namestring}funcnewGoodA()(*A,error){return&A{name:"Go",},nil}funcnewBadA()(*A,error){returnnil,fmt.Errorf("failedtocreateA")}func(a*A)greet()string{return"Hello"+a.name}funcmain(){valueA,err:=newBadA()if

pointers - 类型将接口(interface)指针转换为接口(interface)指针

这个问题在这里已经有了答案:Whycan'tIgettheaddressofatypeconversioninGo?(1个回答)2年前关闭。我正在尝试将接口(interface)指针(*B)转换为其他接口(interface)指针(*A)。A是B的“父”所以B具有A的所有功能有。我在谷歌搜索并找到了“类型断言”,但在这种情况下我不能这样做。我试过了:f(b.(A))f(b.(*A))f((*b).(A))f(&(*b).(A))但唯一有效的是:tmp:=(*b).(A)f(&tmp)然而它复制b它没有优化。typeAinterface{foo()}typeBinterface{Abar

Goland 调试器无法在 Mac 上使用 go 版本升级(v1.11 -> v1.13)

我在mac(mojave操作系统)中将golang从v1.11升级到v1.13。调试器开始抛出错误测试框架意外退出。控制台输出是APIserverlisteningat:127.0.0.1:xxxxxVersionofDelveistoooldforthisversionofGo(maximumsupportedversion1.12,suppressthiserrorwith--check-go-version=false)Debuggerfinishedwithexitcode1从那时起我就无法在goland上使用调试器,但是delveascli命令正在运行。不知道如何进行?另外,

map - 在 Go 中清除具有指针值的映射

我有一个map[string]*list.List并且每个列表节点也是一个指针。通过简单地将map清除为nil,所有map和列表以及所有这些指针是否都会被清除并收集垃圾并准备好再次使用?typeUnrolledGroupstruct{nextints[]uint32}vardictionary=struct{mmap[string]*list.Listkeys[]string}{m:make(map[string]*list.List)}l:=list.New()newGroup:=UnrolledGroup{next:1,s:make([]uint32,groupLen)}newGr

go - 设置指针的值不能通过接口(interface){}

下面是来自go反射法则的稍微修改的示例http://blog.golang.org/laws-of-reflection.第二个代码部分使用了来自map[string]interface{}的指针,但它不起作用,我做错了什么?谢谢//http://play.golang.org/p/LuMBUWLVT6packagemainimport("fmt""reflect")typeTstruct{xfloat64}func(xT)RowMap()map[string]interface{}{returnmap[string]interface{}{"x":&x.x,}}funcmain(){

go - 通过来自 channel 值的指针分配给局部变量

代码在这里:http://play.golang.org/p/WjpgN_0AaP在第45、46和47行,有三种不同的方法可以从消息代理中提取值(value)。//varmbMessageBroker=*所有这三个都具有完全相同的结果。选择一种方式而不是另一种方式有什么意义?另外,我很困惑为什么星号看起来没有什么区别。 最佳答案 查看函数声明:func(c*MyGui)Receive(in我们可以看到会给你一个*MessageBroker类型的值,指向MessageBroker的指针结构。在指针值之前放置一个星号将取消引用它(参见G

go - 如何在结构初始化器中使用指针类型?

当它是其中一种数字类型的引用类型别名时,我不知道如何初始化结构字段:packagemainimport("fmt""encoding/json")typeNint64*int64typeMyStructstruct{ValueNint64}funcmain(){data,_:=json.Marshal(&MyStruct{Value:??10??})fmt.Println(string(data))} 最佳答案 你不能,你将不得不添加一个额外的步骤playground:funcNewMyStruct(iint64)*MyStruct